﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;

public partial class PerfilUsuario : System.Web.UI.UserControl
{
    private string _codUsuario = "";

    public string CodUsuario
    {
        get { return _codUsuario; }
        set { _codUsuario = value; }
    }

    protected void Page_Init(object sender, EventArgs e)
    {
        this.Page.RegisterRequiresControlState(this);
    }

    protected override void LoadControlState(object savedState)
    {
        object[] ctlState = (object[])savedState;
        base.LoadControlState(ctlState[0]);
        _codUsuario = (string)ctlState[1];
    }

    protected override object SaveControlState()
    {
        object[] ctlState = new object[2];
        ctlState[0] = base.SaveControlState();
        ctlState[1] = _codUsuario;
        return ctlState;
    }

    protected void Page_Load(object sender, EventArgs e) 
    {
        if (!this.IsPostBack)
        {
            LoadProfile();
        }
    }

    private void LoadProfile()
    {        
        ProfileCommon perfil = this.Profile;
        MembershipUser user = Membership.GetUser(perfil.UserName);        
        if (this.CodUsuario.Length > 0)
        {
            perfil = this.Profile.GetProfile(this.CodUsuario);
            user = Membership.GetUser(this.CodUsuario);
            TxtCodigo.Text = this.CodUsuario;
        }
        TxtCodigo.Text = perfil.UserName;
        TxtNombres.Text = perfil.Personal.nombres;
        TxtApPaterno.Text = perfil.Personal.appaterno;
        TxtAPMaterno.Text = perfil.Personal.apmaterno;
        DdlGenero.SelectedValue = perfil.Personal.genero;
        TxtDni.Text = perfil.Personal.dni;
        TxtEmail.Text = user.Email;
        if (perfil.Personal.fechanacimiento != DateTime.MinValue)
            TxtFechaNacimiento.Text = perfil.Personal.fechanacimiento.ToShortDateString();
        TxtCiudad.Text = perfil.Ubicacion.ciudad;
        TxtDireccion.Text = perfil.Ubicacion.direccion;
        TxtTelefono.Text = perfil.Ubicacion.telefono;
        TxtCelular.Text = perfil.Ubicacion.celular;
        DdlLenguaje.SelectedValue = perfil.preferencias.cultura;
    }

    public void SaveProfile()
    {
        ProfileCommon perfil = this.Profile;
        MembershipUser user = Membership.GetUser(perfil.UserName);        
        if (this.CodUsuario.Length > 0)
        {
            perfil = this.Profile.GetProfile(this.CodUsuario);
            user = Membership.GetUser(this.CodUsuario); 
        }        
        perfil.Personal.nombres = TxtNombres.Text;
        perfil.Personal.appaterno = TxtApPaterno.Text;
        perfil.Personal.apmaterno = TxtAPMaterno.Text;
        perfil.Personal.genero = DdlGenero.SelectedValue;
        perfil.Personal.dni = TxtDni.Text;
        user.Email = TxtEmail.Text;
        if (TxtFechaNacimiento.Text.Trim().Length > 0)
            perfil.Personal.fechanacimiento = DateTime.Parse(TxtFechaNacimiento.Text);
        perfil.Ubicacion.ciudad = TxtCiudad.Text;
        perfil.Ubicacion.direccion = TxtDireccion.Text;
        perfil.Ubicacion.telefono = TxtTelefono.Text;
        perfil.Ubicacion.celular = TxtCelular.Text;
        perfil.preferencias.cultura = DdlLenguaje.SelectedValue;
        perfil.Save();
        Membership.UpdateUser(user);
    }

    public void ReloadProfile()
    {
        LoadProfile();
    }
}